Memory system in which extended function can easily be set

ABSTRACT

According to one embodiment, a nonvolatile semiconductor memory device, a controller, an extended function section, and an extension register. The controller controls the nonvolatile semiconductor memory device. The extended function section is controlled by the controller. The extension register which is provided with a certain block length capable of defining an extended function of the extended function section. The controller processes a first command to write header data of a command to operate the extended function section to the extended function section through the extension register, and a second command to read header data of a response from the extended function section through the extension register.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is based upon and claims the benefit of priority fromprior Japanese Patent Application No. 2012-152877, filed Jul. 6, 2012;the entire contents of both of which are incorporated herein byreference.

FIELD

Embodiments described herein relate generally to a memory system using,for example, a semiconductor nonvolatile memory.

BACKGROUND

Recently, it is desired that a memory card be not only a mere memorydevice, but also be a memory device to which various functions can beadded in order to impart added value to the memory card. Further, inorder to make it possible to use the additional functions on aplug-and-play basis, a general-purpose initialization means is desired.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram schematically showing a memory system appliedto an embodiment.

FIG. 2 is a block diagram showing an example of firmware of the memorysystem shown in FIG. 1.

FIG. 3 is a block diagram showing an example of a read command of anextension register.

FIG. 4 is a timing chart showing a read operation of an extensionregister to be carried out by a read command.

FIG. 5 is a timing chart showing a read operation of a data port to becarried out by a read command.

FIG. 6 is a block diagram showing an example of a write command of anextension register.

FIGS. 7A, 7B, and 7C are views each showing an operation of a maskregister.

FIG. 8 is a timing chart showing a write operation of an extensionregister to be carried out by a write command.

FIG. 9 is a timing chart showing a write operation of a data port to becarried out by a write command.

FIG. 10 is a view showing an example of a general information field tobe set to a first page of an extension register.

FIG. 11 is a flowchart showing an example of an operation of a memorysystem conforming to a read command.

FIG. 12 is a flowchart showing an example of an operation of a memorysystem conforming to a write command.

FIG. 13 is a flowchart showing an example of an operation of a hostdriver.

FIG. 14 is a flowchart showing another example of an operation of a hostdriver.

FIG. 15 is a view schematically showing an access operation of anextension register in the SDIO.

FIG. 16 is a view showing an example of revision management.

FIG. 17 is a view showing an example of a read command of an extensionregister according to a second embodiment.

FIG. 18 is a view showing an example of a write command of an extensionregister according to the second embodiment.

FIG. 19 is a timing chart showing a read operation of an extensionregister to be carried out by a read command.

FIG. 20 is a timing chart showing a read operation of a data port to becarried out by a read command.

FIG. 21 is a timing chart showing a write operation of an extensionregister to be carried out by a write command.

FIG. 22 is a timing chart showing a write operation of a data port to becarried out by a write command.

FIG. 23 is a view showing an example of a general information field tobe set at a first page of an extension register.

FIG. 24 is a flowchart showing an example of an operation of a memorysystem conforming to a read command according to the second embodiment.

FIG. 25 is a flowchart showing an example of an operation of a memorysystem conforming to a write command according to the second embodiment.

FIG. 26 is a view showing an example of a multi-block read command of anextension register according to the second embodiment.

FIG. 27 is a view showing an example of a multi-block write command ofan extension register according to the second embodiment.

FIGS. 28A and 28B are views showing an example of a display position ofgeneral information according to the second embodiment.

FIG. 29 is a view showing an example of a relationship between thememory space and SDIO space according to the second embodiment.

FIG. 30 is a flowchart shown to explain simplification of initializationof the SDIO according to the second embodiment.

FIG. 31 is a view schematically showing a relationship between a memorydevice and functional interface of a host according to the secondembodiment.

FIG. 32 is a schematic block diagram shown to explain control of abuffer according to the second embodiment.

FIG. 33 is a view showing an example of a function identification code.

FIG. 34 is a view schematically showing a relationship between a hostdevice and memory device according to a third embodiment.

FIG. 35 is a block diagram showing an example of a read command of anextension register according to the third embodiment.

FIG. 36 is a block diagram showing an example of a write command of anextension register according to the third embodiment.

FIGS. 37A, 37B, and 37C are views each showing a pattern of a command.

FIG. 38 is a view showing an example of a data structure of a commandheader, command payload, response header, and response payload.

FIGS. 39A, 39B, and 39C are views each showing an example of a commandheader, payload, and response header.

FIGS. 40A, 40B, and 40C are views each showing an example of a commandheader, payload, and response header.

FIG. 41 is a view showing an example of an “OP Code” of a commandheader.

FIG. 42 is a view showing an example of an extension register mapapplied to the third embodiment.

FIG. 43 is a view showing an example of data transfer corresponding toFIG. 37A.

FIG. 44 is a timing chart shown to explain the data transfer shown inFIG. 43.

FIG. 45 is a view showing an example of data transfer corresponding toFIG. 37B.

FIG. 46 is a timing chart shown to explain the data transfer shown inFIG. 45.

FIG. 47 is a view showing an example of data transfer corresponding toFIG. 37C.

FIG. 48 is a timing chart shown to explain data transfer shown in FIG.47.

FIG. 49 relates to a fourth embodiment, and is a view showing an exampleof a data structure of a response.

FIG. 50 is a view showing an example of a flag indicating an event of anextended function.

FIG. 51 is a block diagram showing an example of an application andextended function provided in a host device.

FIG. 52 is a sequence chart showing an example of operations of the hostdevice shown in FIG. 51 and a memory device.

FIG. 53 relates to a fifth embodiment, and is a view schematicallyshowing the configuration in which a converter is used.

FIG. 54 is a sequence chart shown to explain an operation of the fifthembodiment.

FIG. 55 is a sequence chart shown to explain another operation of thefifth embodiment.

FIG. 56 is a block diagram showing a modification example of FIG. 53.

DETAILED DESCRIPTION

In general, according to one embodiment, a nonvolatile semiconductormemory device, a controller, a memory, an extended function section, andan extension register. The controller controls the nonvolatilesemiconductor memory device. The memory which is serving as a work areais connected to the controller. The extended function section iscontrolled by the controller. The extension register which is providedon the memory is provided with a certain block length capable ofdefining an extended function of the extended function section. Thecontroller processes a first command to write header data of a commandto operate the extended function section to the extended functionsection through the extension register, and a second command to readheader data of a response from the extended function section through theextension register.

A schematic explanation of this embodiment is as follows.

(Function Extension Method)

When a host driver looks for a function driver configured to control theadditional function, and a corresponding function driver is installed inthe host, it becomes possible to easily carry out function extension byadopting a mechanism configured to transfer control to the functiondriver. Control peculiar to a function is hidden in the function driver,and hence it becomes possible for the host driver to implement anadditional function by using only the minimum information. For example,firmware includes an extension register of a plurality of pages managedby the firmware, and provides a standard general information fieldconfigured to recognize a specific driver in page 0 of the extensionregister. Thereby, it becomes possible for the host system to implementthe plug-and-play function. Further, by the management carried out bythe host system so that each of the functions can be pointed out inorder to support the multi-function card/device, it is made possible touse the multi-function card/device without changing the host software.

(Compatibility of SD Memory or SDIO Host Controller)

In the SD memory host controller too, a dedicated command configured toaccess an extension register by which control of an additional functioncan be efficiently carried out is defined. By transfer of a fixed-lengthblock of 512 bytes, it is possible to issue the dedicated command from aconventional SD memory host controller. Furthermore, by havinginformation about an effective data length or a masking function at thetime of write as an argument of the command, it becomes possible to makethe read-modify-write operation unnecessary.

In a host controller compatible with the SDIO card, by making itpossible to access the extension register from the SDIO access command,it becomes possible to be compatible with short-length-block transferand multi-block transfer, and hence it becomes possible to make afurther optimized driver.

By supporting a data port serving as a data transfer port, it becomespossible to realize implementation requiring a smaller amount of theextension register space. Further, by using a data port, it becomespossible to efficiently carry out data transfer to a device other thanthe extension register. It is possible to support a burst transfercommand by using a plurality of blocks. Regarding the data port, it ispossible to define an arbitrary address of the extension register as adata port when the function is implemented. The card deciphers theaddress to determine whether the address is associated with a data portor an extension register.

(Definition of Extension Register by Relocatable Address)

By making it possible for the card vendor to assign a registerconfigured to control an additional function to an arbitrary position onthe extension register, and by providing address information about theimplemented register from the general information field, it is madepossible to make the register arrangement relocatable. Accordingly,address arrangement conventionally requiring standardization is madeunnecessary, and it becomes easy to manufacture a memory device.Relocation is enabled, and hence it is easily possible, even when aregister is extended, to cope with the extension.

Hereinafter, an embodiment will be described with reference to thedrawings.

FIG. 1 schematically shows a memory system according to this embodiment.

The memory system is constituted of a memory device 11 such as an SDcard, and host 20.

When the memory device 11 is connected to the host 20, the memory device11 receives power supply to operate, and carries out processingcorresponding to access from the host 20. The memory device 11 includesa controller 11 a.

The controller 11 a is constituted of, for example, a host interface 12,CPU 13, read only memory (ROM) 14, random access memory (RAM) 15, buffer16, and memory interface 17. These are connected to each other by a bus.For example, a NAND flash memory 18, and SDIO 19 serving as an extendedfunction section are connected to the memory interface 17. As theextended function section, for example, a wireless LAN device or thelike can be adopted.

The host interface 12 carries out interface processing between thecontroller 11 a and host 20.

The memory interface 17 carries out interface processing between thecontroller 11 a and NAND flash memory 18 or the SDIO 19.

The CPU 13 is a unit configured to manage operations of the overallmemory device 11. A program configured to control the CPU 13 executespredetermined processing by using firmware (control program and thelike) stored in the ROM 14 or by loading the firmware into the RAM 15.That is, the CPU 13 creates various tables and an extension register, tobe described later, on the RAM 18, receives a write command, readcommand or erase command from the host 20 to access an area on the NANDflash memory 18, and controls data transfer processing through thebuffer 16.

The ROM 14 stores therein firmware such as a control program to be usedby the CPU 13. The RAM 15 is used as a work area of the CPU 13, andstores therein a control program, various tables, and extension registerto be described later.

When data sent from the host 20 is to be written to, for example, theNAND flash memory 18, the buffer 16 temporarily stores therein data of agiven amount (for example, data of one page) and, when data read fromthe NAND flash memory 18 is to be sent to the host 20, the buffer 16temporarily stores therein data of a given amount. Further, the buffer16 can control the SD bus interface and back-end asynchronously bycarrying out the control through the buffer.

The NAND flash memory 18 is constituted of, for example, memory cells ofa stacked gate structure or memory cells of a MONOS structure.

The SDIO 19 has a function of a peripheral such as a digital camera andPHS, and function of an interface. By adopting a wireless LAN device asthe SDIO 19, it becomes possible for even a digital camera having nowireless communication function to carry out data communication bywireless between itself and an external server, external PC, and thelike.

As the host 20, for example, a digital camera, PHS, and the like can beadopted. The host 20 is constituted of a host controller 21, CPU 22, ROM23, RAM 24 and, for example, hard disk 25 (including an SSD). These areconnected to each other by a bus.

The CPU 22 controls the overall host. The ROM 23 stores therein firmwarenecessary for the operation of the CPU 22. Although the RAM 24 is usedas, for example, a work area of the CPU 22, a program which can beexecuted by the CPU 22 is also loaded here to be executed. The hard disk25 holds various data items. In the state where the memory device 11 isconnected to the host controller 21, the host controller 21 carries outinterface processing between itself and the memory device 11.Furthermore, the host controller 21 issues various commands, to bedescribed later, in accordance with instructions from the CPU 22.

(Configuration of Firmware)

FIG. 2 shows an example of the functional configuration of the firmwarestored in the ROM 14 of the memory device 11. These functions arerealized by the combination of the hardware items such as the CPU 13 andthe like constituting the controller 11 a. The firmware is constitutedof, for example, a command processing section 14 a, flash memorycontroller 14 b, extension register processing section 14 c, andfunction processing program 14 d. When the memory device 11 isactivated, the extension register processing section 14 c creates anextension register 31 in the RAM 15. The extension register 31 is avirtual register, and is enabled to define an extended function. In theembodiment, the extension register is not limited to the virtualregister. It is possible to provide the extension register as hardwarein the CPU 13, for example.

(Configuration of Extension Register)

As shown in FIG. 2, the extension register 31 is constituted of, forexample, eight pages. One page is constituted of 512 bytes. In order toaccess the 512-byte extension register in units of one byte, addressesof at least 9 bits are required and, in order to access the eight pages,addresses of at least 3 bits are required. By the addresses of a totalof 12 bits, all the spaces of the extension register are madeaccessible. Although 512 bytes is an access unit which can be supportedby almost all hosts, the access unit is not limited to 512 bytes, andmay be made larger than 512 bytes. When the extension register 31 isconstituted of an address field of a long bit length, some lower bitsare used as an access unit, and remaining upper bits are used to selectone of a plurality of pages.

The reason for making the 512 bytes a unit is that the configuration ismade in such a manner that a large number of memory card hostcontrollers carry out read/write transfer by using one block (=512bytes) as a unit. Although a host controller compatible with the SDIOcan carry out read/write in units of one byte, not all the hostcontrollers support the above read/write. In order to enable the greatmajority of the host controllers to control the extended function, it isconvenient if access can be carried out in units of 512 bytes.

Of the eight pages (page 0 to page 7), page 0 is an area configured torecord a general information field in order to carry out theplug-and-play operation of the extended function. Details of the generalinformation field will be described later. In pages 1 to 7, registersconfigured to control the extended functions are defined. A position caneasily be specified in page 0, and hence page 0 is a suitable place torecord the general information field, but the page in which the generalinformation field is to be recorded is not necessarily limited to page0, and a position in a specific page can be defined as a placeconfigured to describe the general information field.

For read/write of the extension register, dedicated read/write commandsto be defined as follows are used. These commands each have a firstoperation mode in which read/write of the extension register is carriedout, and second operation mode in which a data port is configured.

(Read Command (CMD 48) of Extension Register)

FIG. 3 shows an example of the field configuration of a read command(CMD 48) of the extension register. “S” indicates a start bit of thecommand, “T” is a bit indicating the transfer direction, and “index”indicates the command number. “RS” (register select) indicates a page inthe extension register 31, and “OFS” indicates a position (offset from ahead of the page) of data in the selected page. By using “RS” of 3 bits,and “OFS” of 9 bits, a space corresponding to the 8 pages of the512-byte extension register can be specified in units of one byte. Morespecifically, a read start position in the selected extension registeris designated by “RS” and “OFS”.

“LEN” indicates the data length. An effective data length necessary forread in the 512-byte extension register is designated by the 9-bit LENfield.

“CRC7” indicates a cyclic redundancy check code, and “E” indicates anend bit of the command. Further, “rsv” indicates a spare bit.

(Read Command of Extension Register, First Operation Mode)

FIG. 4 shows an example of a read operation of an extension register tobe carried out in the first operation mode.

As shown in FIG. 4, upon receipt of a command (CMD 48) from the host 20,the memory device 11 returns a response (R1) to the host 20 and,thereafter reads a 512-byte data block from the extension register 31.

More specifically, by the arguments of the command (CMD 48), i.e., by“RS” and “OFS”, a page in the extension register, and position of datato be read in the page are designated, and data length is designated by“LEN”. In the manner described above, the data in the designatedextension register is set to the head of the 512-byte data block, and isread. Among data items in the 512-byte data block, data items havingdata lengths exceeding a data length specified by “LEN” becomeineffective data items. A CRC code is added to the last part of the datablock to make it possible to check whether or not the data has beenproperly received (checking of data is carried out by includingineffective data). Effective data items are arranged from the head, andhence it is not necessary for the host 20 to carry out an operation suchas data shift or the like in order to look for effective data.

(Read Command of Extension Register, Second Operation Mode)

FIG. 5 shows an example of an operation of data port read to be carriedout in the second operation mode.

Upon receipt of the command (CMD 48), the memory device 11 returns aresponse (R1) and, thereafter returns the 512-byte data block.

By arguments “RS” and “OFS” of the command, a position in a selectedpage of the extension register is designated. In FIG. 5, a data portexample of a case where the length is “1” is shown. That is, it issufficient if the data port occupies only an address of one byte on theextension register map. Further, it is sufficient if it is possible todistinguish whether or not an address is a data port by decoding of theaddress, and it is not necessary for the data to be actually transmittedthrough the 1-byte width port, and hence the data transmissionperformance is not adversely affected. It is possible to read data ofone block (512-byte unit) from the device assigned to this data port.That is, it is possible to read data of one block (512-byte unit) at onetime. The read data is held in, for example, the buffer 16, and is thenread by the host 20.

When the same data port is subsequently read, the subsequent 512-bytedata can be read. The place from which data to be read from the dataport is taken can be freely defined by the specification of the extendedfunction. Regarding data port control, the control can be carried out bydefining a control register on, for example, the extension register. ACRC code is added to the last part of the 512-byte data block to make itpossible to check whether or not the data has been properly received.

(Write Command (CMD 49) of Extension Register)

FIG. 6 shows an example of a write command of the extension register. Inthe write command (CMD 49), parts identical to the read command (CMD 48)are denoted by identical reference symbols. The write command and readcommand are distinguished from each other by “index”. By using “RS” of 3bits, and “OFS” of 9 bits, a page in the extension register, andposition of data in the selected page are designated. A length of datato be written to the 512-byte extension register is designated by a“LEN” field of 9 bits. Accordingly, it is possible to write data of anarbitrary data length (byte unit) within 512 bytes to an arbitrary pageand place of the extension register.

The write command (CMD 49) is provided with a mask register in theargument of the command. That is, “Mask” indicates an 8-bit length maskregister. By the mask register, it becomes possible to carry out anoperation in units of one bit in data write of one byte, and write datato only a specific bit. Accordingly, in a bit operation within one byte,it is not necessary to carry out the read-modify-write operation.

When the data length is one byte, i.e., in the case of “LEN=0” (length1), the mask register becomes effective. Regarding a bit of the maskregister “Mask” having data of “1”, data is written to the bit, andregarding a bit of the mask register “Mask” having data of “0”, thevalue already set is retained.

That is, when an extension register holding data shown in FIG. 7A isassumed, if data of the mask register is as shown in FIG. 7B, byexecuting a write command, data is written to a bit of the mask registerhaving data of “1” as shown in FIG. 7C, and in a bit having data of “0”,the original data is retained. Accordingly, it becomes possible torewrite only the desired bits without carrying out the read-modify-writeoperation. The parts each indicated by “x” show the bits to which newdata is written.

Further, when longer mask data can be supplied by a separate means, evenin the case of LEN larger than 1 (LEN>1), although mask write isenabled, in the example shown in FIGS. 7A, 7B, and 7C, mask data isassigned to the command arguments, and hence the 8-bit mask is used.

(Write Command of Extension Register, First Operation Mode)

FIG. 8 shows an example of a write operation of the extension registerto be carried out in the first operation mode.

Upon receipt of the command (CMD 49), the memory device 11 returns aresponse (R1) and, thereafter receives a 512-byte data block.

The memory device 11 returns a CRC code indicating whether or not thedata block has properly been received to the host 20. Thereafter, thememory device 11 returns information indicating the busy state until theprocessing of the command is completed, and notifies the host 20 of thetiming at which the host 20 can issue the next command. The data blockis held in the buffer 16.

In the command processing, a page and position in the extension registerare designated by the arguments “RS” and “OFS” of the command, and datalength is designated by “LEN”. Among the data blocks held in the buffer16, data items each having a length designated by “LEN” are written tothe extension register from the head thereof. Data in the data blockshaving a length exceeding the data length designated by “LEN” isdiscarded as ineffective data.

By arranging effective data items from the head of the data block, itbecomes unnecessary for the host system to carry out an operation ofarranging the effective data items in the middle of the data block.

(Write Command of Extension Register, Second Operation Mode)

FIG. 9 shows an example of an operation of a write data port to becarried out in the second operation mode.

Upon receipt of the command (CMD 49), the memory device 11 returns aresponse (R1) and, thereafter receives a 512-byte data block.

The memory device 11 returns a CRC code indicating whether or not thedata block has properly been received to the host 20. Thereafter, thememory device 11 returns information indicating the busy state until theprocessing of the command is completed, and notifies the host 20 of thetiming at which the host 20 can issue the next command. The data blockis held in the buffer 16.

In the command processing, a page and position in the extension registerare designated, and a data port is designated by the arguments “RS” and“OFS” of the command. It is sufficient if the data port occupies only anaddress of one byte on the extension register map. It is possible towrite data of one block (512-byte unit) held in the buffer 16 to acertain device assigned to this data port. That is, it is possible towrite data of one block at one time.

When the same data port is subsequently written, the subsequent 512-bytedata can be written to the device to which the data is assigned. Theplace to which the data of the data port is delivered can be freelydefined by the specification of the extended function. Regarding dataport control, the control can be carried out by defining a controlregister on, for example, the extension register.

(Usage Example of General Information Field)

FIG. 10 shows an example of the general information field shown in page0 of the extension register 31. By making it possible for the host 20 tospecify a driver configured to control the extended function by usingthe general information field, it is possible for the host system, whenan extended function is added, to easily use the extended function, andrealize plug-and-play.

A sequence example to be processed by a standard host driver will bedescribed below with reference to FIG. 10.

(Structure Revision)

A structure revision is a revision configured to define the format ofpage 0 of the extension register 31. When new information is added tothe general information field, which version of the general informationfield is held is indicated by updating the structure revision. Thefunction host driver of the previous version ignores the new field.

(Data Length)

As a data length, the effective data length recorded in page 0 is shown.

(Number of Extended Functions (=N))

The number of extended functions indicates the number of extendedfunctions supported by the device. At the time of start-up, the hostdriver repetitively checks whether or not drivers for extended functionsare installed the number of times corresponding to the number ofsupported functions.

(Device 1 Function Identification Code)

When a code is set to the device 1 function identification code, it isindicated that the standard driver can be used. When the OS supports thestandard driver, the device can be used without installing a dedicateddriver. When a dedicated driver is installed, the dedicated driver ispreferentially used. In the case of a nonstandard function, “0” is setto this field. In this case, this function is controlled by only adedicated driver.

(Device 1 Manufacturer Identification Information, Device 1 FunctionIdentification Information)

Each of the device 1 manufacturer identification information, and device1 function identification information is information configured tospecify a dedicated driver and, in these fields, a name of themanufacturer, and name of the distributor or identification informationof the extended function are described by using, for example, an ASCIIcharacter string. On the basis of these information items, the hostdriver checks whether or not a dedicated driver of the device 1 isinstalled.

As the function identification information, a model number of thedevice, revision, and the like are described by using, for example, anASCII character string.

(Beginning Address of Next Device)

The beginning address of the next device indicates an address in page 0in which device information of the next device is described. When thehost system does not support this device, this device cannot be used,and hence the next device is checked. The fields after this are of avariable length, and hence definition is set to this position.

(Device 1 Address Pointers 1 to X, Length Fields 1 to X)

The device 1 address pointers 1 to X, and length fields 1 to X indicatethat a plurality of extension register areas can be defined for onefunction. The addresses and lengths are enumerated below. The lengthfield may not necessarily be required information and this field can beomitted.

(Device 1 Address Pointer 1 (Start Address), Length 1)

The first area of the extension register used by the device 1, beginningaddress in the space of pages 1 to 7 of the extension register, and sizeof the used extension register area are indicated.

That is, one or a plurality of extension register areas can be assignedto one device, and the address pointer indicates a place (start address)of an arbitrary extension area other than page 0. The length indicates asize for occupying the extension register having the pointer at thebeginning address.

(Device 1 Address Pointer 2 (Start Address), Length 2)

A position and area size of the second area in the extension registerassigned to the device 1 are indicated. Thereby, an application inwhich, for example, the standard driver carries out control in only thefirst area, and a dedicated driver is enabled to efficiently carry outcontrol by using the first area and second area is enabled.

(Device 1 Address Pointer X (Start Address), Length X)

A position and area size of the Xth area assigned to the device 1 areindicated.

As described above, a plurality of areas can be defined in the extensionregister. The areas are arranged in such a manner that they do notoverlap each other. It is possible to check whether or not there isoverlap between the areas by using the length information.

When an additional field becomes necessary, the additional field isadditionally defined after this. A host which cannot recognize a newfield reads the recognizable fields, and ignores the additional field. Askip can be carried out by using the above-mentioned (beginning addressof the next device) field. (Operation of read command (CMD 48))

FIG. 11 shows an operation of the controller 11 a in the memory device11 compatible with the read command (CMD 48).

When the read command is received, the arguments “RS” and “OFS” of thecommand are analyzed by the CPU 13, and it is determined whether or notthe read command is read from the data port (ST11). That is, a page “RS”in the extension register, and position of data in the page aredetermined. As a result, when it is determined that the read command isread from the extension register, data having a data length “LEN” isacquired from a position indicated by “OFS” in the selected page of theextension register 31 (ST12). The acquired data is set to the buffer 16(ST13).

On the other hand, when it is determined in step ST11 that the readcommand is read from the data port, data of 512 bytes is acquired, inthe second operation mode, from a specific function of, for example, theSDIO 19 through a data port of a position indicated by “OFS” of theselected page of the extension register 31 (ST14). The acquired data isset to the buffer 16 (ST15).

(Operation of Write Command (CMD 49))

FIG. 12 shows an operation of the controller in the memory device 11compatible with the write command (CMD 49).

When the write command is received, the arguments “RS” and “OFS” of thecommand are analyzed by the CPU 13 (command processing section 14 a),and it is determined whether or not the write command is write to a dataport (ST21). That is, a page “RS” in the extension register, andposition of data in the page are determined. When it is determined, as aresult, that the write command is write to a part other than the dataport, it is determined whether or not the argument “LEN” of the commandis 0 (“LEN”=0) (length 1), i.e., whether or not the mask is effective(ST22). When it is determined, as a result of the determination, that“LEN” is not 0 (length is greater than 1), write processing of theextension register is carried out by the extension register processingsection 14 c. That is, data of a length designated by “LEN” is acquiredfrom the buffer 16 (ST23). The acquired data is set to a positiondesignated by “OFS” in the page of the extension register selected by“RS”.

On the other hand, when it is determined in step ST22 that “LEN” is 0(“LEN=0”) (length is 1), and the mask is effective, data of 1 byte, anda mask of 1 byte are acquired from the buffer 16 by the extensionregister processing section 14 c (ST25). By using the 1-byte data, and1-byte mask, a mask operation shown in FIGS. 7A, 7B, and 7C is executed,and part of the data of the position designated by “OFS” in the page ofthe extension register selected by “RS” is rewritten (ST26).

Further, when it is determined in step ST21 that the write command iswrite to the data port, data of 512 bytes is acquired from the buffer 16(ST27). The acquired data is transferred to a specific function of, forexample, the SDIO 19 through a data port of the position indicated by“OFS” in the selected page of the extension register 31 (ST28).

(Host Driver Processing)

FIG. 13 shows processing of the host 20. When the memory device 11 isconnected to the host 20, the memory device 11 is activated, andextension register 31 is spread on the RAM 15 of the memory device 11.The host device 11 first issues a read command (CMD 48) by using thehost driver, and acquires data of page 0 of the extension register 31(ST31). Then, the structure revision of the acquired page 0 isconfirmed, and it is further confirmed which version of the generalinformation field is held (ST32). After this, the number of supportedfunctions N, and beginning address of the device information areacquired (ST33, ST34).

Subsequently, it is checked, by a search, whether or not a dedicatedfunction driver corresponding to the acquired extended function isinstalled in the host 20 (ST35, ST36). When there is no dedicatedfunction driver as a result of the checking, it is further determinedwhether or not the function identification code described in page 0 ofthe extension register is “0” (ST37). As a result, when the functionidentification code is “0”, the extended function is not supported, andhence it is recognized that this device cannot be used, whereby theprocessing is shifted to a search for a driver for the next device(ST34).

Further, as a result of the determination of step ST37, when thefunction identification code is not “0”, the standard function driverinstalled in the host 20 is searched for (ST38, ST39). As a result, whenthere is no standard function driver, this extended function is notsupported, and hence it is recognized that the device cannot be used,whereby the processing is shifted to a search for a driver for the nextdevice (ST34).

Further, as a result of the search of steps ST35, and ST36, when thereis a standard function driver, and as a result of the search of stepsST35, and ST36, when there is a dedicated function driver, an address ofthe device, and length number described in page 0 are acquired (ST40).This operation is executed the number of times corresponding to thenumber of the addresses and lengths (ST41).

After this, the retrieved dedicated function driver or the standardfunction driver is loaded from, for example, the hard disk 25 of thehost 20 into the RAM 24, an address pointer (start address) of one or aplurality of extension areas described in page 0 is delivered to thefunction driver, and an extended function is initialized (ST42). Theaddress and length information is delivered when the function driverloaded into the RAM 24 is executed. Although there is the possibility ofthe standard function driver, and dedicated function driver differingfrom each other in the number of deliverable address and lengthinformation items, the information items are delivered by the number ofthe deliverable items in the order registered in page 0. Accordingly,the firstly registered address and length area serves as a commonfunction register, and address and length area registered later can filla role of an option.

Initialization is carried out by the function driver. That is, on thebasis of the start address delivered from the host driver, the functiondriver accesses the extension register to which the function is assignedto initialize the device. In the initialization operation, it isnecessary to consider the power consumption of the device. This isbecause the device must be used within the range of power which can besupplied by the host. When the device has a plurality of power modes, itis necessary to select a power mode lower than the device power whichcan be supplied by the host. The host system transmits the power whichcan be supplied by the host system to the function driver by a separatemeans, whereby selection of the power mode is enabled.

The operation of above steps ST34 to ST43 is repeated until the numberof supported functions N is reached (ST43).

It should be noted that when, for example, a new field is added to page0, processing of the new field is added to a part between step ST40 andstep ST41. A host driver which cannot recognize the new field isconfigured to skip the field.

As described above, the host 20 acquires the information of page 0 ofthe extension register 31 and, on the basis of the information,retrieves the driver, whereby plug-and-play can be realized. Further,unlike in the conventional case, the device vendor can define a functionat an arbitrary position in the extension register without the need fordetermining the fixing position of the extension register, and hencefunction extension can easily be implemented.

FIG. 14 shows a modification example of FIG. 13, parts identical to FIG.13 are denoted by identical reference symbols, and only different partswill be described below.

In FIG. 14, the dedicated function driver, and standard function driverare different from each other in the search processing. That is, in stepST34, after the beginning address of the device information is acquired,first, it is determined whether or not the function identification codeis “0” (ST51). As a result of the determination, when the functionidentification code is not “0”, i.e., when the function is the standardfunction, it is further determined whether or not a dedicated driver isto be used (ST53). As a result of the determination, when the dedicateddriver is not used, a standard function driver is searched for (ST54,ST55). When there is no standard function driver as a result of thesearch or when it is determined in step ST53 that the dedicated functiondriver is used, the dedicated function driver is searched for (ST52,ST56). When there is the dedicated function driver as a result of thesearch or when there is the standard function driver in step ST55, theaddress and length number is acquired as described previously (ST40).

By the above operation too, it is possible to realize plug-and-play asin the case of FIG. 13.

It should be noted that in the above description, it has been describedthat the extended function driver is installed in the host 20, andsearches the inside of the host 20. However, the configuration is notlimited to this, and the extended function driver may also be stored inthe memory card 11. In this case, the memory card 11 is also made thesearch object of the extended function driver.

FIG. 33 shows information for specifying function drivers when a cardhas options and the function drivers differ according to the options. Asshown in FIG. 33, a function identification code indicates two kinds ofinformation, an option code and a function code. The function codeindicates a standardized specific functional specification, and the kindof option is also defined by the functional specification. The optioncode is information which indicates whether an option implemented in thecard affects the function driver. This example shows the information onwhether CMD48/49 are supported and the information on whether CMD52/53are supported. When the option code is 1 byte, the driver using CMD48/49is denoted by “01h” (“h” indicates a hexadecimal number), and the driverusing CMD52/53 is denoted by “02h”. When installing the function driverin a host system, these codes are registered as a functional driverimplementing code. The host system with which two drivers are installedhas the both option codes “01h” and “02h”.

In a card designed in order to use CMD48/49, “01h” is indicated in theoption code. The host system selects a driver for CMD48/49 based on theoption code. Moreover, In a card designed in order to use CMD52/53,“02h” is indicated in the option code. The host system selects a driverfor CMD52/53 based on the option code.

It is important that the host driver does not need to have theinformation about the options, and a general-purpose host driver can bemade. The information about the options is given to the host system whena function driver is installed. Since a host driver does not need forthe information about the options, the host driver does not need toupdate a host driver when a new card is installed. The functionspecification can decide contents of the options freely, and byinstalling two or more function drivers corresponding to the combinationof the options in the host system, the optimal function driver can beselected according to the support state of the card.

(Access to Extension Register in SDIO)

FIG. 15 shows access to the extension register in the SDIO.

A host controller compatible with the SD memory card can access theextension register by using commands CMD 48 and CMD 49, and control theextended function. That is, the host controller supports thefixed-length block transfer and single-block transfer.

On the other hand, a host controller compatible with the SDIO card isenabled to access the extension register by using the commands CMD 48and CMD 49, and the extension register is mapped onto each function areaof the SDIO, whereby it becomes possible for the host controller toaccess the extension register also from the SDIO commands CMD 52 (writecommand), and CMD 53 (data transfer command). By using the SDIOcommands, it is possible to support the variable block length transfer,and multi-block transfer, and optimize the driver. When access is madeby using the commands CMD 48 and CMD 49, it is possible to access theextension register without regard to the spatial mapping of the SDIO.

More specifically, when the extension register is used in the SDIO, eachpage of the extension register is mapped onto each function area. In thecase of the example shown in FIG. 15, page 0 of the extension registeris mapped onto the function 0 of the function area 61, page 1 and page 2are mapped onto the function 1, and page 3 is mapped onto the function2. The function 0 holds address information indicating positions on theSDIO map at which function registers of the pages are arranged.Accordingly, by using the address information, it is possible to accesseach page of the extension register by means of not only the driverusing the commands CMD 48 and CMD 49, but also the driver using thecommands CMD 52 and CMD 53.

It should be noted that the host 20 delivers position information aboutthe extension register assigned to the extended function to the driverfrom the general information field described in the first page of theextension register. Thereby, it becomes possible to control the extendedfunction even when the extended function is arranged at an arbitraryposition.

Further, in the state where data transfer is enabled between the host 20and memory device 11 by the plug-and-play, it becomes possible to carryout data transfer between the host 20 and SDIO serving as an extendedfunction section by using the commands CMD 48, CMD 49, CMD 52, and CMD53.

According to the above embodiment, the extension register including aplurality of pages is provided in the RAM 15 of the memory device 11,and the standard general information field configured to recognize aspecific driver is set in page 0 of the extension register 31.Accordingly, the host 20 sets a driver by referring to the generalinformation field in page 0 of the extension register 31, wherebyplug-and-play can be realized.

Further, by defining the commands CMD 48 and CMD 49 exclusively used toaccess the extension register, the host controller for the memory canalso efficiently control the added function.

Moreover, the data transfer is made transfer of the 512-byte fixed blocklength, and hence the dedicated command configured to access theextension register can be issued from the conventional host controllerfor the memory.

Furthermore, information about the effective data length or a maskingfunction at the time of write is set as an argument of the command, andhence when part of the data is to be rewritten, the read-modify-writeoperation is not necessary, and part of the data can easily berewritten.

Further, the host controller compatible with the SDIO card supports thedata port, and hence it becomes possible to carry out data transfer to acertain specific device, and realize implementation that enablesreduction in the amount of the extension register space consumed.

Further, by using the data port, it is possible to support a bursttransfer command based on a plurality of blocks in the SDIO, andefficiently carry out data transfer of a device other than the memory.(Although not described in this embodiment, in the memory too, when aburst transfer command based on a plurality of blocks is defined,transfer of a plurality of blocks is enabled.)

Furthermore, it becomes possible for the host controller compatible withthe SDIO card to be compatible with short-length-block transfer, andmulti-block transfer by accessing the extension register by using anaccess command of the SDIO. Accordingly, it becomes possible to create afurther optimized driver.

Further, it is made possible for the card vendor to assign a registerconfigured to control an additional function to an arbitrary position onthe extension register, and thus the card vendor provides addressinformation about the implemented register from the general informationfield in page 0. Accordingly, it is possible to arrange the definedfunction registers in a relocatable manner. Accordingly, the work ofdetermining address assignment conventionally requiring standardizationis made unnecessary, and it is possible to facilitate manufacture of thedevice.

It should be noted that the configuration of the extension register isnot limited to a plurality of pages, and it is also possible to make theextension register constituted of one page, and set areas correspondingto page 0, and pages 1 to 7 within the one page.

(Determination of Usable Functions by Revision Confirmation)

Each of the functions described above is provided with a registerconfigured to indicate revision on the extension register set defined bythe function. Further, the function driver knows the correspondingrevision by itself. When a certain function is to be extended byrevision improvement, it is possible to maintain the compatibility byextending the function while maintaining compatibility with theconventional function. When a removable card is used, usable functionsare determined by the combination of the function revision of the card,and revision of the function driver installed in the host system.

FIG. 16 shows an example of revision management. FIG. 16 shows examplesof the function available in accordance with the revision of each of thecard and function driver. For example, the case where there are threerevisions (A<B<C) will be described. In this case, extension in which Cincludes the function of B, and B includes the function of A is carriedout. Revision management is carried out by the function driver. Thefunction driver itself knows its own revision. Available functions aredetermined on the basis of the combinations shown in FIG. 16. In all thefunction driver revisions, the function of the revision A can be usedand, in order to use the function of the revision B, it is necessary forthe function driver revision to be higher than or equal to B.

Second Embodiment

FIG. 17 and FIG. 18 each show an example of the field configuration of aread command CMD 48, and write command CMD 49 according to a secondembodiment. It should be noted that in FIG. 17, and FIG. 18, partsidentical to FIG. 3, and FIG. 6 are denoted by identical referencesymbols, and a description of them is omitted.

The commands CMD 48 and CMD 49 shown in FIG. 17 and FIG. 18 are thecommands CMD 48 and CMD 49 shown in FIG. 3 and FIG. 6 in each of whichthe address field constituted of 12 bits of “RS” and “OFS” is extendedto 20 bits constituted of “FNO” and “Addr” to thereby consider theaffinity/compatibility to/with the SDIO.

The “MIO” field is a bit separating the memory space and SDIO space fromeach other, thereby enabling both the spaces to define an extensionregister independently of each other. Accordingly, when the extensionregister is defined, it is possible to prevent both the spaces frominterfering with each other. When “MIO” is 0 (“MIO”=0), the extensionregister for the memory can be accessed and, when “MIO” is 1 (“MIO”=1),extension register for the SDIO can be accessed.

The “FNO/FID” field is set to one of “FNO” and “FID” according to thevalue of the “MIO” field. When “MIO” is 1 (“MIO”=1), “FNO” is a 3-bitfield indicating a function number and, when “MIO” is 0 (“MIO”=0), “FID”is a 4-bit field indicating function identification information. Due tothe different bit numbers, different symbols are used for expression.When the aforementioned general information field is to be read,“FNO/FID” is set to 0 (“FNO/FID”=0). It is sufficient if the host driversets this field to 0. Although “FID” is not used in the memory space,“FNO” is used in the SDIO space to distinguish the eight functionspaces.

That is, regarding “FNO/FID” (4 bits), when “MIO” is 1 (“MIO”=1), thebits 38 to 36 indicate “FNO”, and bit 35 is always made “0”.

Further, regarding “FNO/FID”, when “MIO” is 0 (“MIO”=0), the bits 38 to36 indicate “FID”. “FID” is used to distinguish the functions withoutincreasing the memory space.

(The Memory Space May be Increased by Using “FID”, this Being notLimited.)

When a function is to be implemented in a card, a unique value isassigned to “FID/FNO”, and is indicated in the field definition ofgeneral information as will be described later. Accordingly, when acommand is issued to the data port, the function driver sets “FID/FNO”as an argument, whereby it is possible for the card to confirm that thecommand is a command corresponding to the designated function.Accordingly, it is possible to prevent data corruption and malfunctiondue to designation of a wrong data port, and erroneous write fromoccurring, thereby assuring safety.

Although when the host attempts to specify a function from addressinformation, the host must decode the address information, functiondistinction is enabled by using only “FID/FNO”, and control of the hostdriver can be simplified. That is, the same command is used by aplurality of functions in a mixing manner, and hence in the host andcard, “FID/FNO” is set so that the functions can be distinguished.

The “Addr” field (17 bits) is an address, and can access a space of 128KB. The upper 8 bits of “Addr” are used as a page number. One of pages 0to 7 is selected by the 8 bits. A 512-byte block in the selected page isaccessed by the lower 9 bits. That is, by using “MIO”, “FNO” (“MIO”=1),and “Addr”, a position of the extension register is designated.

The “Len” field (8 bits) shown in FIG. 17 indicates an effective datalength.

Further, in the write command (CMD 49) shown in FIG. 18, “MW” is a bitused to designate the mask write mode. When “MW” is 0 (“MW”=0), the maskis disabled and, when “MW” is 1 (“MW”=1), the mask is enabled.

Further, in the “Len/Mask” field, when the mask is disabled (“MW”=0),the data length is set to 9 bits (16 to 08). Further, when the mask isenabled (“MW”=1), the data length is set to 1, and the write operationis controlled as described above by the lower 8 bits of the 9 bits (16to 08). That is, when each bit in the 8 bits is “1”, data of theregister is written and, when each bit is “0”, the bit in the registeris not changed, and the value set already is maintained.

In the second embodiment, it is possible to make the space which can beaccessed by the SDIO commands CMD 52 and CMD 53, and SDIO space whichcan be accessed by the commands CMD 48 and CMD 49 coincide with eachother. That is, it becomes possible to access the same extensionregister set by using either commands.

(Read Command of Extension Register, First Operation Mode)

FIG. 19 shows an example of a read operation of the extension registerto be carried out in a first operation mode of a read command (CMD 48)of the extension register.

As shown in FIG. 19, upon receipt of a command (CMD 48) from the host20, the memory device 11 returns a response (R1) to the host 20 and,thereafter reads a 512-byte data block from the extension register 31.

More specifically, a position of data in the page to be read isdesignated by “FNO” (MIO=1) and “Addr”, and effective data length to beread is designated by “Len”. In this way, the data in the designatedextension register is set to the head of the 512-byte data block, and isthen read. Of the 512-byte data block, data exceeding the data lengthdesignated by “Len” becomes ineffective data. A CRC code is added to theend of the data block, thereby making it possible to check whether ornot the data has been properly received (checking of data is carried outby including ineffective data).

FIG. 20 shows an example of a read operation of a data port to becarried out in the second operation mode.

Upon receipt of the command (CMD 48), the memory device 11 returns aresponse (R1) and, thereafter returns the 512-byte data block.

The memory device 11 verifies whether or not the argument “FID/FNO” ofthe command coincides with the assigned extension register set. Theextension register set is specified by “FNO” (“MIO”=1) and “Addr”. When“FID/FNO” and the extension register set coincide with each other, aposition in the selected page of the extension register is designated bythe argument “Addr” of the command. It is sufficient if the data portoccupies only an address of one byte on the extension register map. Itis sufficient if it is distinguished whether or not an address is a dataport by decoding of the address, and it is not necessary for the data tobe actually transmitted through the 1-byte width port, and hence thedata transmission performance is not adversely affected. It is possibleto read data of one block (512-byte unit) from the device assigned tothis data port. That is, it is possible to read data of one block(512-byte unit) at one time. The read data is held in, for example, thebuffer 16, and is then read by the host 20.

When the same data port is subsequently read, the subsequent 512-bytedata can be read. The place from which data to be read from the dataport is taken can be freely defined by the specification of the extendedfunction. Regarding data port control, the control can be carried out bydefining a control register on, for example, the extension register. ACRC code is added to the last part of the 512-byte data block to make itpossible to check whether or not the data has been properly received.

Further, as a result of the above verification, when “FID/FNO” is notcoincident with the value assigned to the function, the data transferoperation is not executed, and the data block is not transferred.

(Write Command of Extension Register, First Operation Mode)

FIG. 21 shows an example of a write command of the extension register.

Upon receipt of the command (CMD 49), the memory device 11 returns aresponse (R1) and, thereafter receives a 512-byte data block.

The memory device 11 returns a CRC code indicating whether or not thedata block has properly been received to the host 20. Thereafter, thememory device 11 returns information indicating the busy state until theprocessing of the command is completed, and notifies the host 20 of thetiming at which the host 20 can issue the next command. The data blockis held in the buffer 16.

In the write command (CMD 49), parts identical to the read command (CMD48) are denoted by identical reference symbols. The write command, andread command are distinguished from each other by “Index”. A page in theextension register, and a position of data in the selected page aredesignated by “FNO” (“MIO”=1), and “Addr” of 17 bits. Furthermore, adata length to be written to the 512-byte extension register isdesignated by the 9-bit “Len” field. Accordingly, it is possible towrite data having an arbitrary data length (byte unit) within 512 bytesto an arbitrary page and position in the extension register.

As described above, in the write command (CMD 49), a mask register isprovided in the argument of the command. That is, “Mask” indicates an8-bit length mask register. By the mask register, it becomes possible tocarry out an operation in units of one bit in data write of one byte,and write data to only a specific bit. Accordingly, in a bit operationwithin one byte, it is not necessary to carry out the read-modify-writeoperation. When the data length is one byte, i.e., when the upper 1 bitof “Mask” is “1”, the mask register becomes effective.

(Write Command of Extension Register, Second Operation Mode)

FIG. 22 shows an example of an operation of a write data port to becarried out in the second operation mode. Upon receipt of the command(CMD 49), the memory device 11 returns a response (R1). Thereafter, thememory device 11 verifies whether or not the argument “FID/FNO” of thecommand coincides with the extension register set. The extensionregister set is specified by “FNO” (“MIO”=1) and “Addr”. When “FID/FNO”and the extension register set coincide with each other, a position inthe selected page of the extension register is designated by theargument “Addr” of the command, and the 512-byte data block is received.

Subsequently, the memory device 11 returns a CRC code indicating whetheror not the data block has properly been received to the host.Thereafter, the memory device 11 returns information indicating the busystate until the processing of the command is completed, and notifies thehost 20 of the timing at which the host 20 can issue the next command.The data block is held in the buffer 16.

In the command processing, a page and position in the extension registerare designated, and a data port is designated by the argument “Addr” ofthe command. It is sufficient if the data port occupies only an addressof one byte on the extension register map. It is possible to write dataof one block (512-byte unit) held in the buffer 16 to a certain deviceassigned to this data port. That is, it is possible to write data of oneblock at one time.

When the same data port is subsequently written, the subsequent 512-bytedata can be written to the device to which the data is assigned. Theplace to which the data of the data port is delivered can be freelydefined by the specification of the extended function. Regarding dataport control, the control can be carried out by defining a controlregister on, for example, the extension register.

Further, as a result of the above verification, when “FID/FNO” is notcoincident with the value assigned to the function, the data transferoperation is not executed, and the data block is discarded.

(Usage Example of General Information Field)

FIG. 23 is a view showing an example associated with designation of FIDaccording to the second embodiment. The meaning of the generalinformation field is identical to FIG. 10. The point different from FIG.10 is that a 4-bit field is secured in order to set the value of“FID/FNO” in the format of the extension address, and length field.Unique “FID/FNO” is set for each function. Each function implemented inthe card knows its own “FID/FNO”.

(Operation of Read Command (CMD 48))

FIG. 24 shows an operation of a controller 11 a in the memory device 11corresponding to the read command (CMD 48) shown in FIG. 19 and FIG. 20.

When the read command is received, it is verified by the CPU 13 whetheror not the argument “FID/FNO” of the command coincides with the assignedextension register set (ST51). The extension register set is specifiedby “FNO” (“MIO”=1) and “Addr”. As a result of the verification, whenboth of them coincide with each other, the argument “Addr” of thecommand is analyzed, and it is determined whether or not the readcommand is read from the data port (ST52). That is, it is determinedwhether or not the address is an address defined by “FNO” (“MIO”=1) and“Addr” as the data port.

As a result, when it is determined that the address is not the addressof the data port, and the command is read of the extension register,data of the data length “Len” is acquired from the selected page of theextension register 31 on the basis of the position “Addr” in the firstoperation mode (ST53). The acquired data of the data length “Len” is setto the 512-byte data block of the buffer 16 (ST54).

On the other hand, when it is determined in step ST52 that the readcommand is read from the data port, data of 512 bytes is acquired from,for example, a specific function of the SDIO 19 through a data port of aposition set in advance in the selected page of the extension registerin the second operation mode (ST55). The acquired data is set to the512-byte data block of the buffer 16 (ST56).

As a result of the determination of step ST51 described above, when thecommand is not a command associated with the data port, the processingis terminated.

(Operation of Write Command (CMD 49))

FIG. 25 shows an operation of a controller in the memory device 11corresponding to the write command (CMD 49).

When the write command is received, it is verified by the CPU 13(command processing section 14 a) whether or not the argument “FID/FNO”of the command coincides with the assigned extension register set(ST61). The extension register set is specified by “FNO” (“MIO”=1) and“Addr”. As a result of the verification, when both of them coincide witheach other, the argument “Addr” of the command is analyzed, and it isdetermined whether or not the write command is write to the data port(ST62). That is, it is determined whether or not the position is aposition of the data port set in advance by “FNO” (“MIO”=1) and “Addr”.

As a result of the above determination, when it is determined that thewrite command is write to a part other than the data port, it isdetermined whether or not the argument “MW” of the command is “1”, i.e.,whether or not the write is mask write (ST63).

As a result of the determination, when it is determined that the writeis not mask write, write processing of the extension register is carriedout by the extension register processing section 14 c. That is, data ofa length designated by “Len” is acquired from the data block of thebuffer 16 (ST64). The acquired data is set to a designated position inthe selected page of the extension register on the basis of “Addr”(ST65).

On the other hand, when it is determined in step ST63 that “MW” is “1”(“MW”=“1”), and the write is mask write, 1-byte data is acquired fromthe data block of the buffer 16 by the extension register processingsection 14 c, and 1-byte mask is acquired from the argument (ST66).

Subsequently, a mask operation shown in FIGS. 7A, 7B, and 7C is executedby using the 1-byte data, and 1-byte mask, and data obtained when themask operation of the 1 byte is executed is set to a predeterminedposition in a predetermined page of the extension register designated by“Addr” (ST67).

Further, when it is determined in step ST62 that the write command iswrite to the data port, 512-byte data is acquired from the data block ofthe buffer 16 (ST68). The acquired data is sent to, for example, aspecific function of the SDIO 19 through a data port of a position in adesignated page of the extension register (ST69).

As a result of the determination of step ST61 described above, when thewrite command is not a command associated with the data port, theprocessing is terminated.

(CMD 58, CMD 59)

FIG. 26 and FIG. 27 each show a multi-block transfer command configuredto improve transfer efficiency of data, FIG. 26 shows multi-block read(CMD 58), and FIG. 27 shows multi-block write (CMD 59).

Although the arguments of the commands CMD 58 and CMD 59 are similar tothose of the commands CMD 48 and CMD 49, they partly differ from eachother in the definition. Further, the command CMD 58 has no argument“Len” of the command CMD 48, and command CMD 59 has no arguments “MW”and “Len/Mask” of the command CMD 49. This is because transfer to a dataport is assumed in the multi-block transfer. The commands CMD 58 and CMD59 are optional commands, and a data port is configured in such a mannerthat a plurality of single-block transfer commands CMD 48 or CMD 49 canbe substituted for the command CMD 58 or CMD 59.

Data transfer through a data port is assumed in the multi-blocktransfer. Accordingly, this command becomes effective only when anaddress of this command coincides with an address defined as a data portin the extension register space. Accordingly, when this command isexecuted with respect to a normal extension register, an error occurs,and data transfer is not executed.

A code configured to recognize a function for which an issued command isused is set to the “FID/FNO” field (4 bits). Accordingly, by using the“FID” field, the function can be recognized by means of the value, andimplementation is facilitated. The function can also be recognized byusing the “Addr” (address) field. However, an address to be assigneddiffers depending on the card, and hence there is the problem that it isdifficult for the host driver to manage recognition of a function froman address.

It is possible for the host driver to use a data buffer or the likeimplemented in the host system for each function for switching control.

The arguments of the command CMD 58/59 do not include the “Len” fieldconfigured to designate the data length. This is because for datatransfer of long data, it is necessary to designate a long block count,and this information is too much for the argument of the read/writecommand to designate. Accordingly, it is necessary to designate theblock count necessary for data transfer before issuing the command CMD58/59. Accordingly, for example, a method of defining a registerconfigured to set a block count to the extension register, and settingthe register by using the command CMD 49, a method of issuing a commandconfigured to set a block count immediately before the command CMD 58/59is issued or the like is used.

When setting the number of blocks to the extension register, “FID/FNO”of CMD 49 which sets it up, and “FID/FNO” of CMD 58/59 which executesdata transfer need to be in coincidence. The data transfer is notperformed when both of these are not in coincidence.

When data is set to the extension register, the data can independentlybe set for each function, and each function is not affected by otherfunctions. When a common block count command is used, setting of a blockcount to the memory multi-block command, and distinction thereof arerequired. Accordingly, it is necessary to issue the command immediatelybefore issuing each command CMD 58/59, and it is necessary for the hostdriver to manage the issuing order in such a manner that other commandsare not issued immediately after issuance of the command.

In order that the host may specify a function of a multi-functioncard/device, a relative card address (RCA) obtained by initialization,device ID, aforementioned “MIO” information, and “FNO/FID” informationare needed.

Each of FIGS. 28A and 28B shows example of a display position of ageneral information field according to the second embodiment. In thememory space shown in FIG. 28A, the general information field isarranged in page 0 of the extension register and, in the SDIO spaceshown in FIG. 28B, the general information field is arranged at aspecific position at which the field does not conflict with theconventional register. In FIG. 28B, for example, the general informationfor SDIO is arranged at “008FFh”-“00800h” (512 bytes) (“h” indicates ahexadecimal number).

FIG. 29 shows an example of the correspondence between the memory spaceand SDIO space according to the second embodiment. In FIG. 29, partsidentical to FIG. 15 are denoted by identical reference symbols.

The memory extension register can be accessed by using the command CMD48/49. More specifically, single-block transfer is carried out by usinga fixed-block length of 512 bytes. Furthermore, in the case of the dataport, it is possible to carry out multi-block transfer by using thecommand CMD 58/59. The SDIO extension register can be accessed not onlyby the command CMD 48/49 but also by the command CMD 52/53. The commandCMD 53 is a variable-length command, and hence can be used for access tothe SDIO extension register irrespective of the data port.

(Installation of Function Driver)

Whether or not the SDIO function (CMD 52/53) can be used is determinedby the function supported by the host system. A host that does notsupport the SDIO installs a function driver using the commands CMD 48/49and CMD 58/59. A host system that supports the SDIO can further installa function driver using the command CMD 52/53.

It should be noted that the command CMD 53 is a command which supports,for example, variable-length block transfer and multi-block transfer,and can be read or written, and command CMD 52 is a command which has,for example, no data, and enables read or write of 1-byte data byargument and response.

The SDIO extension register space of the command CMD 48/49 is equivalentto the space of the command CMD 52/53. The command CMD 53 supportsvariable-length block transfer and multi-block transfer, and hence byusing an optimized SDIO driver, data transfer is executed moreefficiently.

Like a host supporting the command CMD 48/49 refers to the informationwithout referring to the card information structure (CIS), the generalinformation of the SDIO can be seen from a specific position of thefunction 0.

(Selection of Function Driver)

Regarding an SDIO-compatible card, when a function driver using thecommand CMD 52/53 is installed, the function driver is used and, whenthe function driver is not installed, a function driver using thecommands CMD 48/49, and CMD 58/59 is used.

Regarding an SDIO-incompatible card, a function driver using thecommands CMD 48/49, and CMD 58/59 is used.

(Initialization Operation of SDIO)

FIG. 30 schematically shows a second initialization operation of theSDIO in a combo card.

Heretofore, the definition of the initialization sequence (a firstinitialization operation) of the SDIO is given in such a manner that theSDIO function is not enabled unless an SDIO initialization command (CMD5) is firstly executed. Accordingly, even when a memory is used in thecombo card, re-initialization is required when the SDIO is to be used,thereby making it hard for the host to use the specification.

Normally, it is desirable that an I/O function be initializedimmediately before the function is used in order not to waste the systemresources or not to waste the power. Regarding the timing forinitialization of the function, it is recommendable to carry out theinitialization at a point of time at which the application using thefunction is activated.

Further, in the re-initialization, changes in the relative card address(RCA) are made, and hence the accessing method of the memory isaffected. In order to enable the SDIO function without affecting memorycontrol, it is desirable that the memory initialization sequence be madethe fundamental, and the SDIO function be made addable later.

Thus, as shown in FIG. 30, when the memory device 11 is activated andinitialized (ST71), a command (CMD 3) is issued, and relative cardaddress (RCA) is acquired (ST72). After this, a command (CMD 7) isissued (ST73), and the memory device 11 is set to a transfer state,i.e., a state where the memory can be used (ST74). Then, a commonresource of cards, such as a pass mode and a power consumption setup, isset up (ST75). In this state, an initialization command (CMD 5) of theSDIO is issued (ST76). Thereby, the SDIO is initialized, and receptionof the commands CMD 52 and CMD 53 is enabled (ST77).

In step ST76, it is also possible to set up a common resource of theSDIO automatically. Conventionally, a memory and I/O had the independentsetting method in order to control a common resource. For this reason,drivers contained in a memory and I/O needed to be adjusted similarly.In the second initialization operation, a card which received CMD5copies the common resource of the memory set up in ST75 to I/O.Therefore, it is not necessary to adjust each driver. The commonresource contains a bus speed mode, RCA, current limit/power Limit, anda setup of drive capability, etc., for example.

This is an addition to the initialization method, and initialization canalso be carried out by the conventional SDIO initialization sequence,and the conventional sequence has compatibility.

According to the above-mentioned configuration, the function isinitialized at the timing at which the application using the function isactivated, and hence it is possible to initialize each function withoutaffecting the memory control.

(Function Driver Interface)

Heretofore, the SDIO has been controlled by assigning necessary controlbits to the common register. In order for a card to control by setting avalue to a register, the card needs to implement a processing function.When carrying out specific processing, by calling a functional driver,it becomes possible to process by a function driver instead ofprocessing inside a card. More specifically, the process is performed bya host.

When the control which has conventionally been carried out by the cardthrough the common register is defined as an application programinterface (API) of the function driver, it is possible to form thecontrol into software. By standardizing the API level, implementation ofthe card can be facilitated.

Examples of the API are shown below.

(1) Initialize Function

Calling a function from the host driver to initial the function

(2) Abort/Reset Function

Abort or reset of a function

(3) Get Function Information

Read of function revision

Read of function information (support information or the like)

Read of interrupt information (polling)

(4) Power Consumption Control

Power mode information implemented in the function

(5) Power Off Notification

Notifying the timing at which power shutdown is allowed

(6) Application Interface

Control interface with the application

Particularly, in a card in which a plurality of functions areimplemented, when the power of the card is turned off, it is necessaryfor the host to turn off the power after each function is brought into astate where each function allows power shutdown. Power Off Notificationis an API used for this control.

FIG. 31 schematically shows a relationship between an SD card serving asthe memory device 11, and function interface of the host 20.

The host 20 is constituted of a host controller 21, host driver 71, filesystem 72, memory application 73, function driver 74, and functionapplication 75. Further, the SD card serving as the memory device 11includes an extension register 31, and function hardware 19 constitutedof, for example, the SDIO.

In the host 20, the host driver 71 supports a function of detecting andloading the function driver 74. That is, the host driver 71 refers tothe general information field of the extension register to detect thefunction driver 74, and executes the function driver, whereby the hostdriver 71 can use the extended function. Further, the function driver 74configured to control the extension register 31, and functionapplication 75 communicate with each other by means of an API defined bythe functional specification.

The SD card includes the aforementioned general information field forthe purpose of standardization so that the extension register 31 definedby the functional specification, and host driver 71 can find and loadthe function driver 74.

The host controller 21, and memory device 11 communicate with each otherby using the aforementioned command CMD 48/49 or the like.

According to the configuration described above, by defining the controlwhich has conventionally been carried out in the card as the API of thefunction driver, it is possible to form the control into software.Further, by standardizing the API level, implementation of the card canbe facilitated.

Further, the host driver 71 refers to the general information field ofthe extension register to detect the function driver 74, and execute thefunction driver, whereby the host driver 71 can use the extendedfunction. Accordingly, the host 20 can easily use the extended function.

(Control of Data Buffer by “FID”)

It is possible for the memory device 11 to determine for which functiona command is intended by recognizing address information. However, theaddress range differs depending on the function, and hence it isdifficult for the host 20 to recognize a function from the address.

Accordingly, as described above, it is possible for the host 20 toeasily recognize the function by using “FID/FNO”.

Further, it is possible to control, for example, a plurality of buffersof the host 20 by using “FID/FNO”.

As shown in FIG. 32, the host 20 includes buffers 81 and 82 to be usedwhen the host 20 carries out data transfer with respect to a pluralityof functions of an SD card serving as the memory device 11, the buffersindependently corresponding to the functions. These buffers 81 and 82are connected to the host controller 21 through a multiplexer (MUX) 83.The buffers 81 and 82 and the multiplexer 83 are constituted by virtualcomponents, and the buffers 81 and 82 are configured on the systemmemory, and a function of the multiplexer 83 is realized by a softwareby a driver. An address of buffers selected by the multiplexer 83 issupplied to the host controller. By controlling the multiplexer 83 bymeans of “FID/FNO”, it is possible to select a buffer 81 or 82corresponding to each function.

That is, the host 20 can select a corresponding buffer 81 or 82 inaccordance with “FID/FNO” set to the command CMD 58/59 by using themultiplexer 83.

When, for example, a read command CMD 58 has been issued from the hostcontroller 21, data read from an extension register of the correspondingfunction of the memory device 11 is supplied to the multiplexer 83through the host controller 21. The multiplexer 83 supplies the receiveddata to one of the buffers 81 and 82 on the basis of “FID/FNO”.

Further, when, for example, a write command CMD 59 is issued from thehost controller 21, the multiplexer 83 supplies data selected from oneof the buffers 81 and 82 to the host controller 21 on the basis of“FID/FNO”, and host controller 21 transfers the data to the memorydevice 11. The memory device 11 supplies the data to an extensionregister of the corresponding function on the basis of “FID/FNO”.

As described above, “FID/FNO” is used to control the multiplexer 83,whereby it is possible to surely select the buffer 82 or 83corresponding to each function.

Third Embodiment

As described above, it is made possible to provide an extension registerin the SD card as a memory device, and write data to the extensionregister or read data from the extension register by using a commandCMD48, CMD49, CMD58 or CMD59.

In a third embodiment, a specific method of transferring a necessarycommand or a message from a host device 20 to an extended functionsection 19 or transferring a response from the extended function section19 to the host device 20 will be described.

In the third embodiment, a command and response necessary for anoperation of the extended function are defined, and a place for deliveryand receipt of the command and response is also determined. Furthermore,when long data is to be transferred between the host device 20 andextended function section 19, for example, data called a command payloadis added to define the method of transferring the data as the needarises.

FIG. 34 is a view showing the third embodiment, and schematically showsa relationship between the host device 20 and an SD card serving as amemory device 11 on the firmware level. In FIG. 34, parts identical toFIG. 1 are denoted by identical reference symbols.

The host device 20 includes an extended function application 20-1, andcard command issuance section 20-2.

The memory device 11 includes a controller 11 a, NAND flash memory 18,and extended function section 19. The controller 11 a includes a cardcommand controller 11-1, extension register 31, and memory controller11-2.

When transmission/reception of data such as a command, message or thelike is carried out between the host device 20 and extended functionsection 19 of the memory device 11, the card command issuance section20-2 issues one of CMD48, CMD49, CMD58, and CMD59, a command header 20a, response header 20 c and, as the need arises, a command payload 20 b,and response payload 20 d.

That is, when data is transferred from the host device 20 to the memorydevice 11, the command header 20 a and, as the need arises, the commandpayload are used. The command header 20 a is supplied to the memorydevice 11 by using CMD49, and the command payload 20 b is supplied tothe memory device 11 by using CMD59.

On the other hand, when a response from the extended function of thememory device 11 is received by the host device 20, the response header20 c and, as the need arises, the response payload 20 d are used. Theresponse header 20 c is received by using CMD48, and the responsepayload 20 d is received by using CMD58 (multi-block read).

(Command CMD58, CMD59)

FIG. 35 shows CMD58 serving as a read command, and FIG. 36 shows CMD59serving as a write command. In FIG. 34 and FIG. 35, an argument ofCMD58/59 is similar to FIG. 26 and FIG. 27. Accordingly, only partsdifferent from FIG. 26 and FIG. 27 will be described below.

In the case of the example shown in FIG. 26 or FIG. 27, when long datais to be transferred, immediately before issuance of CMD58/59, CMD23used to set the block number has been issued.

Conversely, in the third embodiment, CMD58/59 enables long data to betransferred without using CMD23.

In FIG. 35 and FIG. 36, parts different from FIG. 26 and FIG. 27 arearguments “BUS” (block unit select) and “BUC” (block unit count). “FNO”is substantially identical to “FID/FNO”, and is used to distinguish amemory space selected by “MIO” or a functional space in an SDIO section.

“BUS” is a field used to specify a size of a block unit. In the case of“BUS”=“0”, the block unit size is 512 bytes and, in the case of“BUS”=“1”, the block unit size is 32 Kbytes. Here, 32 Kbytes indicatethat 64 block data (64×512 bytes) is treated as one block unit.

“BUC” is a field used to specify the block unit number. As the blockunit size to be specified by this field, the overall size of data itemsto be calculated by using the block unit size specified by “BUS”, andtransferred is calculated. However, the block used as the unit of thedata size at the time of data transfer is fixed at 512 bytesirrespectively of BUS.

Further, as will be described later, a port of the extension register isspecified by an address specified by “ADDR” (address field).

(Transmission/Reception Pattern of Commands)

FIGS. 37A, 37B, and 37C show patterns of commands to be subjected totransmission/reception between the host device 20 and memory device 11.As the transmission/reception patterns of commands, there are, forexample, three types.

Type 1 shown in FIG. 37A shows a case where a command header 20 a istransmitted from the host device 20 to the memory device 11 by usingCMD49, and a response header from the memory device 11 is received bythe host device 20 by using CMD48.

The type 1 pattern is suitable for transmission/reception of short data.

Type 2 shown in FIG. 37B shows a case where a command header 20 a istransmitted from the host device 20 to the memory device 11 by usingCMD49, thereafter a command payload 20 b is transmitted from the hostdevice 20 to the memory device 11 by using CMD59 and, then a responseheader 20 c from the memory device 11 is received by the host device 20by using CMD48.

The order of transmission of the command header 20 a, and transmissionof the command payload 20 b is not limited to the above. The commandpayload 20 b may be transmitted first and, subsequently the commandheader 20 a may be transmitted.

The type 2 pattern is suitable for a case where data longer than 512bytes is transmitted to the extended function.

Type 3 shown in FIG. 37C shows a case where a command header 20 a istransmitted from the host device 20 to the memory device 11 by usingCMD49, thereafter a response header 20 c from the memory device 11 isreceived by the host device 20 by using CMD48 and, then a responsepayload 20 d from the memory device 11 is received by the host device 20by using CMD58.

Here, the order of reception of the response header 20 c, and receptionof the response payload 20 d is not limited to this. The responsepayload 20 d may be received first and, then the response header 20 cmay be received.

The type 3 pattern is suitable for a case where data longer than 512bytes is received from the extended function.

Whether or not a command payload 20 b or a response payload 20 d isnecessary is specified by the command header 20 a as will be describedlater.

FIG. 38 shows an example of a data structure of a command header 20 a,command payload 20 b, response header 20 c, and response payload 20 d.

The command header 20 a is constituted of 512 bytes, and includes, forexample, an “operation code (OP Code)”, “rsv”, “argument length”,“payload length”, “argument”, and “padding”. In the data structure ofthe command header 20 a, contents of the “argument” are changeddepending on the contents of the “OP Code” as will be described later.

The “OP Code” indicates a code of a command used to operate the extendedfunction. Furthermore, as will be described later, whether or not acommand payload 20 b or a response payload 20 d is necessary isspecified in the “OP Code”.

The “argument length” indicates a data length of the “argument”, and the“payload length” indicates a data length of the payload.

The “padding” is data used to make the length of a command headeridentical to the data transfer processing unit (512 bytes) and, the dataitself has no meaning. The “padding” of the command payload 20 b,response header 20 c or response payload 20 d is similar to the“padding” of the command header 20 a. The command payload 20 b has adata length of 512 bytes×N (N is a natural number equal to or greaterthan 1), and this data length is managed by the payload length of thecommand header 20 a. The command payload 20 b is constituted of, forexample, a “command payload” treated as actual data, and “padding”. Thecontents of the “command payload” change according to the “OP Code”.

For example, when the “OP Code” indicates processing of writing data tothe NAND flash memory 18 through the extended function section 19, thecommand payload is the write data.

Further, when the extended function section 19 has an authenticationprocessing function and, if the “OP Code” indicates write of data of anencrypted key block, the “command payload” becomes data of the encryptedkey block.

The response header 20 c is constituted of 512 bytes. The responseheader 20 c includes, for example, a “response code”, “response datalength”, “response data”, and “padding”.

The response payload 20 d is constituted of a “response payload”, and“padding”. The contents of the “response payload” change according tothe contents of the response. When the response is a result of readingdata of the NAND flash memory through the extended function, thecontents of the “response payload” are the read data.

(Example of Command Header, Payload, and Response Header)

FIGS. 39A, 39B, and 39C and FIGS. 40A, 40B, and 40C each show an exampleof the command header, payload, and response header.

FIGS. 39A, 39B, and 39C show an example of a case where the extendedfunction has a function of processing an encryption key used in theauthentication processing of the memory device 11.

For a case where data called an encrypted key block (EKB) used in theauthentication processing of the memory device 11 is to be written tothe memory device 11, an example of transmitting a command called “writeEKB” in order to write an EKB to the memory device is shown.

FIG. 39A shows an example of the command header 20 a of this case.

“OP Code” is “80h”, and indicates a “write EKB” command.

“Reserved” is set to adjust the data position for the purpose of futureextension, and for facilitation of data processing carried out by adevice.

“Argument Length” indicates the length of the argument of the commandand, in this example, “04h” is set.

“Payload Length” indicates the length of the payload, and “N” is set.

From “Block Number” to “Padding data” are treated as arguments. “BlockNumber” indicates the number of an EKB to be recorded and, “n” is anidentification number used to identify one of a plurality of EKBs.

“Reserved” and “Padding data” are as described previously.

FIG. 39B shows an example of a command payload 20 b in this example. Inthe case of “write EKB”, the EKB data itself is transferred as the“command payload”. The length of the command payload 20 b is specifiedby above-mentioned “Payload Length” of the command header 20 a. Thememory device 11 is notified by the command header 20 a of the “payloadlength” before receiving the command payload 20 b, whereby the memorydevice 11 can carry out advance preparations for recording.

FIG. 39C shows an example of the response header 20 c in this example.In the case of “write EKB”, the response header 20 c is constituted of“Response Code” and “Padding data”. A write processing result of the EKBdata is shown in “Response Code”. For example, when the write issuccessful, “00h” is set as “Response Code”.

FIGS. 40A, 40B, and 40C show an example of transmitting a command called“Read EKB” to be used when the extended function reads EKB data used inthe authentication processing of the memory device 11 from the memorydevice 11.

FIG. 40A is a view showing an example of the command header 20 a of thiscase. The meanings of “OP Code”, “Reserved”, “Argument Length”, and“Payload Length” are identical to the case of “Write EKB” shown in FIGS.39A, 39B, and 39C.

“OP Code” is “81h”, and indicates the “read EKB” command.

“Argument Length” is, in this case, set at “0Ch”.

As “Payload Length”, “N” is set.

From “Block Number” to “Padding data” are treated as arguments. “BlockNumber” indicates the number “n” of the recorded EKB.

“EKB Offset” indicates a read start address of the EKB to be read.

“EKB Length” indicates a length of the EKB to be read.

FIG. 40B shows an example of the response payload 20 b of this case. Inthe case of “Read EKB”, the response payload 20 b transfers EKB dataread from the extended function section 19 to the host device 20 on thebasis of “Block Number”, “EKB Offset”, and “EKB Length” specified by thecommand header 20 a. Accordingly, the “Response Payload” is the EKB dataitself.

The response header 20 c of the case of “read EKB” is constituted of“Response Code” and “Padding data”. A read processing result is shown in“Response Code”. For example, when the read processing is successful,“00h” is set.

Although, in this example, “Response Data” has not been used, when EKBdata is to be transferred, data transfer can be carried out by recordingdigest data of the EKB data into the “Response Data”. As the digestdata, for example, a hash function SHAI or the like of the cryptogramcan be utilized, and it is possible to transfer data from the memorydevice 11 to the host device 20 with the memory data transfer andcalculation processing value separated from each other.

FIG. 41 shows an example of “OP Code” of the command header 20 a.

Regarding “OP Code”, it is possible to assign processing commands of theextended function in sequence from 1. Further, it is also possible toassign a bit indicating presence/absence of the command payload 20 b orthe response payload 20 d to the inside of “OP Code”.

In FIG. 41, the sixth bit of the “OP Code” is called, for example, the“command payload bit”, and is a bit indicating whether or not a commandpayload is necessary. When the “command payload bit” is “1”, thiscommand indicates that the command payload is transmitted.

Further, when the “command payload bit” is “0”, this command indicatesthat the command payload is not transmitted, and only the command headerexecutes the command processing.

The fifth bit of the “OP Code” is called the “response payload bit”, andis a bit indicating whether or not a response payload is necessary. Whenthe “response payload bit” is “1”, this command indicates that thememory device transmits a response payload.

Further, when the “response payload bit” is “0”, it is indicated thatthe memory device does not transmit a response payload, and transmitsonly a response header as an execution result of the command processing.

FIG. 42 shows an example of a map of the extension register 31 appliedto the third embodiment. In this map, Offset indicates a relativeaddress from the beginning address, and this Offset is specified by the“ADDR” field of CMD58 or CMD59.

Offset “4” indicates a register called the “Extension Register Status”.This “Extension Register Status” is a read-only register indicating thatthe extension register is in the idle state, transmission state or inthe reception state.

Offset “8” indicates a register called the “Extension RegisterOperation”. This “Extension Register Operation” is a writable registeror a readable register to be used by using CMD58 or CMD59. This registeris made resettable.

Offset “12” is a register called the “Extension Command Port”, and is awrite-only port of the extension command.

Offset “13” is a register called the “Extension Command Payload Port”,and is a write-only port of the command payload.

Offset “14” is a register called the “Extension Response Payload Port”,and is a read-only port of the extension response payload.

Offset “15” is a register called the “Extension Response Port”, and is aread-only port of the extension response.

(Transaction Data (Type 1))

FIG. 43 shows the transaction data of a case of type 1 where a commandheader 20 a is transmitted from the host device 20 to the memory device11 by using CMD49 shown in FIG. 37A, and a response header from thememory device 11 is received by the host device 20 by using CMD48.

When CMD49 is issued from the host device 20, and the command header 20a is transferred, a page and position in the extension register arespecified by the “Addr” of CMD49 shown in FIG. 18, and the “ExtensionCommand Port” is further specified. An OP Code or the like istransferred to the extended function section 19 through this “ExtensionCommand Port”.

Further, when CMD48 is issued by the host device 20, a page and positionin the extension register are specified by the “Addr” of CMD49 shown inFIG. 17, and the “Extension Response Port” is further specified. Aresponse header 20 c is read from the extended function section 19through this “Extension Response Port”, and is transferred to the hostdevice 20.

FIG. 44 shows a timing chart of the transaction data (type 1).

As shown in FIG. 44, upon receipt of CMD49, the memory device 11 returnsa response R1 and, thereafter receives a command header 20 a as a512-byte data block.

The memory device 11 returns a CRC code indicating whether or not thecommand header 20 a has correctly been received to the host device 20.Thereafter, the memory device 11 returns busy signals until the commandprocessing described in the command header 20 a is completed, andnotifies the host device 20 of the timing at which the host device 20can issue a next command. The command header 20 a is held in a buffer16.

In the command processing, a page and position in the extension registerare specified by the argument “Addr” of CMD49, and the “ExtensionCommand Port” serving as a data port is further specified. The commandheader of one block (512 bytes) held in the buffer 16 is written to anassigned device of the extended function section 19 through this“Extension Command Port”.

After this, upon receipt of CMD48, the memory device 11 returns aresponse R1.

In the command processing, the memory device 11 specifies a page andposition in the extension register by the argument “Addr” of CMD49, andthe “Extension Response Port” serving as a data port is then specified.A response header 20 c treated as a 512-byte data block is read from anassigned device of the extended function section 19 through this“Extension Response Port”. The read response header 20 c is transferredto the host device 20.

(Transaction Data (Type 2))

FIG. 45 shows the transaction data of a case of type 2 where a commandheader 20 a is transmitted from the host device 20 to the memory device11 by using CMD49 shown in FIG. 37B and, thereafter a command payload 20b is transmitted by using CMD59, a response header is read from thememory device 11 by using CMD48, and then the read response header isreceived by the host device 20.

Like in the case of type 1, when CMD49 is issued by the host device 20,and the command header 20 a is transferred, a page and position in theextension register are specified by “Addr” of CMD49, and the “ExtensionCommand Port” is further specified. An OP code or the like istransferred to the extended function section 19 through this “ExtensionCommand Port”.

Subsequently, CMD59 is issued by the host device 20, a command payload20 b is transferred to the memory device 11, and a plurality of payloadblocks are transferred to the extended function section 19 through the“Extension Command Payload Port” of the extension register.

After this, when CMD48 is issued by the host device 20, a responseheader 20 c is read from the extended function section 19 through the“Extension Response Port” of the extension register, and is thentransferred to the host device 20.

FIG. 46 shows a timing chart of the transaction data (type 2).

As shown in FIG. 46, upon receipt of CMD49, the memory device 11 returnsa response R1 and, thereafter receives a 512-byte command header 20 a.

The memory device 11 returns a CRC code indicating whether or not thecommand header 20 a has correctly been received to the host device 20.Thereafter, the memory device 11 returns busy signals until the commandprocessing described in the command header 20 a is completed, andnotifies the host device 20 of the timing at which the host device 20can issue a next command. The command header 20 a is held in the buffer16. The command processing is identical to the transaction data (type1), and hence a description thereof is omitted.

Subsequently, upon receipt of CMD59, the memory device 11 returns aresponse R1.

In the command processing, the memory device 11 specifies a page andposition in the extension register by the argument “ADDR” of CMD59, andthe “Extension Command Payload Port” serving as a data port is thenspecified. A response header 20 c treated as a 512-byte data blockconstituting the command payload 20 b is written to an assigned deviceof the extended function section 19 through this “Extension CommandPayload Port”.

More specifically, the memory device 11 first receives one block data ofa size (512 bytes/32 Kbytes) specified by “BUS” of CMD59. Subsequently,the memory device 11 returns a CRC code indicating whether or not the512-byte data has correctly been received to the host device 20, andoutputs busy signals until the data reception processing is completed.

After this, the above operations are repeated until reception of data ofa block number specified by “BUC” of CMD59 is completed.

It should be noted that the data transmitted to the memory device 11 bythe command payload 20 b is held in the buffer 16. Accordingly, it ispossible for the memory device 11 to transfer the data held in thebuffer 16 to the extended function section 19 in units of one blockwithout the control of the host device 20, and so-called direct memoryaccess (DMA) transfer is enabled.

After this, upon receipt of CMD48, the memory device 11 returns aresponse R1 and, thereafter the host device 20 receives a responseheader 20 c formed as a 512-byte data block through the “ExtensionResponse Port”. The command processing is identical to the transactiondata (type 1), and hence a description thereof is omitted.

(Transaction Data (Type 3))

FIG. 47 shows the transaction data of a case of type 3 where a commandheader 20 a is transmitted from the host device 20 to the memory device11 by using CMD49 shown in FIG. 37C, thereafter a response header isread from the memory device 11 by using CMD48, the response header isreceived by the host device 20 and, subsequently a response payload 20 bis received by using CMD58.

As in the case of the transaction data (type 1) or (type 2), when CMD49is issued by the host, and the command header 20 a is transferred, apage and position in the extension register are specified by “Addr” ofCMD49, and the “Extension Command Port” is further specified in thememory device 11. A command header 20 a is transferred to the extendedfunction section 19 through this “Extension Command Port”.

Subsequently, when CMD58 is issued by the host device 20, a responsepayload 20 d is read from the extended function through the “Extensionresponse Payload Port” of the extension register, and is transferred tothe host device 20.

After this, when CMD48 is issued by the host device 20, a responseheader 20 c is read from the extended function through the “ExtensionResponse Port” of the extension register, and is transferred to the hostdevice 20.

FIG. 48 shows a timing chart of the transaction data (type 3).

As shown in FIG. 48, upon receipt of CMD49, the memory device 11 returnsa response R1 and, after this, receives a 512-byte command header 20 a.

The memory device 11 returns a CRC code indicating whether or not thecommand header 20 a has correctly been received to the host device 20.Thereafter, the memory device 11 returns busy signals until the commandprocessing described in the command header 20 a is completed, andnotifies the host device 20 of the timing at which the host device 20can issue a next command. The command header 20 a is held in the buffer16. The command processing is identical to the transaction data (type1), and hence a description thereof is omitted.

Subsequently, upon receipt of CMD58, the memory device 11 returns aresponse R1 and, thereafter receives 512-byte data constituting aresponse payload 20 d.

In the command processing, the memory device 11 specifies the “ExtensionResponse Payload Port” on the basis of “ADDR” of CMD58, and receives oneblock data of a size (512 bytes/32 Kbytes) specified by “BUS” of CMD58from the extended function section 19 through this “Extension ResponsePayload Port”. The received data is transferred to the host device 20.Subsequently, the memory device 11 transmits a CRC code indicatingwhether or not the 512-byte data has correctly been received to the hostdevice 20.

After this, the above operations are repeated until reception of data ofa block number specified by “BUC” of CMD58 is completed.

After this, upon receipt of CMD48, the memory device 11 returns aresponse R1 and, thereafter the host device 20 receives a responseheader 20 c formed as a 512-byte data block through the “ExtensionResponse Port”. The command processing is identical to the transactiondata (type 1), and hence a description thereof is omitted.

It should be noted that although, in the description of the transactiondata (type 2), the command header 20 a is transferred earlier than thecommand payload 20 b, the command header 20 a may be transferred aftertransmitting the command payload 20 b.

Further, although, in the description of the transaction data (type 3),the response header 20 c is transferred after the response payload 20 d,the response payload 20 d may be transferred after transferring theresponse header 20 c.

According to the third embodiment described above, datatransmission/reception to be carried out between the host device 20 andmemory device 11 is separated into that based on CMD48/49/58/59, thatbased on the command header, and response header, and that based on thecommand payload, and response payload. Accordingly, after commandprocessing, it is possible to carry out preparation for transfer of datato be transferred by the next command payload 20 b to the extendedfunction section 19 on the basis of the command header 20 a. Therefore,it is possible to efficiently transfer data arriving by the commandpayload, to the extended function section 19. Therefore, for example, itis possible to transfer, by DMA, data which has arrived by the commandpayload.

Further, the response is separated into that based on the responseheader 20 c, and that based on the response payload 20 d. Accordingly,after the command processing, and after carrying out preparation for theresponse on the basis of the response header 20 c, it becomes possibleto efficiently transfer data arriving from the extended function section19 to the host device 20 as the response payload 20 d.

Further, the host device 20 transfers the command header 20 a includingan OP code and argument specifying the operation of the extendedfunction section 19 to the extended function section 19 through theextension command port of the extension register by using CMD49 and,thereafter receives the response header 20 c including the response codeand response data, and supplied from the extended function section 19through the extension response port of the extension register by usingCMD48. Accordingly, it is possible to transfer a command or a messagenecessary for the extended function section 19, and transfer a responsefrom the extended function section 19 to the host device 20.

Further, when long data is to be transferred to the extension register,it is possible to transfer a command payload 20 b constituted of aplurality of blocks to the extended function section 19 through theextension command payload port of the extension register by using CMD59,and read a response payload including long data constituted of aplurality of blocks through the extension response payload port of theextension register by using CMD58. Therefore, it is possible to write orread long data to or from the extended function section 19.

Moreover, CMD58/59 includes “BUS” specifying a block size serving as anargument, and “BUC” specifying the block number. Accordingly, it is notnecessary to use CMD23 specifying the block number, and hence it ispossible to easily transfer long data.

Fourth Embodiment

In the first to third embodiments, upon receipt of CMD48/49, the memorydevice 11 returns a response R1 to the host device 20.

However, the extended function section 19 inside the memory device 11has not been provided with means for notifying the host device 20 ofevents such as completion of processing of a command, error, and thelike. Although it is possible to display these events through theextension register, it is necessary for the host device 20 to checkwhether or not an event has occurred by polling, this being inefficient.

Thus, in a fourth embodiment, a flag notifying an event in the extensionregister is provided in a response R1 to be returned in response to eachof all the commands including a command to access the extensionregister, thereby making it possible to notify the host device 20 of anevent without the host device 20 accessing the extension register.

FIG. 49 shows an example of the data structure of the response R1. Theresponse R1 is constituted of, for example, 32 bits. Of these bits, forexample, the eighteenth bit is set as a flag, i.e., extension functionevent (EF_EVENT) indicating an event of the extended function.

When an event occurs in, for example, at least one of a plurality ofextended functions in the memory card 11, the flag EF_EVENT is set to“1”. The bit of the flag EF_EVENT may be returned to “0” at a subsequentresponse or may be returned to “0” when the flag to be described next isread.

FIG. 50 shows an example of an extension function event flag providedin, for example, the extension register.

This extension function event flag is constituted of, for example, 17bits, and numbers of extended functions are arranged in one-to-onecorrespondence with the bits.

When an event occurs in an extended function, the bit of the number ofthe corresponding extended function is set to “1”. The type of the eventmay be defined so that the event can be notified to the inside of theextension register. This bit may be returned to “0” when the value ofthe bit is read or timing at which the bit is returned to “0” may bedefined for each extended function.

FIG. 51 shows an example of a case where the host device 20 is providedwith an application, extended function application 1, extended functionapplication 2 and, further a file system, extended function driver 1,and extended function driver 2 respectively corresponding to the formerthree applications. An operation to be carried out by a host device 20configured as described above when the memory device 11 is accessed bythe host device 20 will be described below.

FIG. 52 shows an example of a sequence chart of an operation to becarried out when the memory device 11 is accessed by the host device 20configured as described above.

First, when a write request or a read request occurs in the applicationor the file system of the host device 20 (S81), CMDXX is created fromthe card driver or the host controller (S82). This CMDXX is one ofCMD48/49/58/59.

Upon receipt of CMDXX, the memory device 11 returns a response R1 to thehost device 20 (S83).

When the flag EF_EVENT included in the response R1 is set to “1”, thecard driver or the host controller issues CMD48 (S84). Upon receipt of aresponse R1 (S85), the card driver or the host controller reads theextension function event flag of the extension register (S86).

The extension function event flag is analyzed by the card driver or thehost controller and, for example, when it is detected that an event hasoccurred in the extended function driver 1, the extended function driver1 is notified of the occurrence of the event by an interrupt or pollingof the card driver (S87).

After this, the extended function driver 1 issues CMD48 to the carddriver or the host controller in order for it to read the contents ofthe event (S88), and the card driver or the host controller issues CMD48to the memory device 11 (S89).

Upon receipt of CMD48, the memory device 11 returns a response R1 to thehost device 20 (S90).

After this, the contents of the event are transferred from the extendedfunction section to the host device 20 by the command processing (S91).The contents of the event are further transferred to the extendedfunction driver 1 (S92).

According to the fourth embodiment described above, the flag EF_EVENTindicating that an event has occurred in one of the extended functionsis provided in the response R1 of CMD48/49/58/59. Accordingly, the hostdevice can learn that an event has occurred in one of the extendedfunctions by receiving the response R1. Therefore, it is not necessaryto detect occurrence of an event by polling, and hence it is possible toefficiently detect an event.

Further, the extension function event flag is provided in the extensionregister, and it is made possible by the extension function event flagto determine that an event has occurred in one of the functions of theextended function section 19. Therefore, it is possible for the hostdevice 20, when occurrence of an event is detected by the flag EF_EVENT,to easily identify an extended function in which the event has occurredby reading the extension function event flag.

Fifth Embodiment

In each of the first to fourth embodiments, a case where the extendedfunction of the memory device 11 is accessed by the host device 20 hasbeen described.

Conversely, in a fifth embodiment, a case where a conversion device isprovided between a host device 20 and memory device 11, and an extendedfunction of the memory device 11 is accessed through this conversiondevice will be described below. More specifically, there is, forexample, a case where an adapter for connection of the memory device 11is connected to the host device 20 serving as a personal computer. Thefifth embodiment enables data transfer between the host device 20 andextended function section 19 of the memory device 11 even when such anadapter is connected to the host device 20.

FIG. 53 schematically shows an example of a case where an adapter 100serving as, for example, a connection device of the universal serial bus(USB) type is connected between the host device 20 and memory device 11.

The adapter 100 includes a converter 101. The converter 101 includes acommand separating section 102, response joining section 103, andcommand issuing section 104.

FIG. 54 and FIG. 55 show the processing operations of the example shownin FIG. 53. FIG. 54 shows an example of a data write operation, and FIG.55 shows an example of a data read operation.

When the memory device 11 is connected to the host device 20 by usingthe USB type adapter 100, a message called a command block wrapper (CBW)is first transmitted from the host device 20 to the adapter 100 and,then transmission or reception of data is carried out. Finally, amessage called a command status wrapper (CSW) is transmitted from theadapter 100 to the host device 20 to thereby controltransmission/reception of data. A direction of transmission/reception ofdata, and length of data to be transmitted/received can be specified inthe CBW.

In the host device 20, when long data is transferred to the extendedfunction section 19 of the memory device 11, the above-mentioned commandheader 20 a, and command payload 20 b are used and, when long data istransferred from the extended function section 19 to the host device 20,the response header 20 c, and response payload 20 d are used.

As shown in FIG. 54, at the time of data write, the host device 20transmits the CBW to the converter 101 (S101). The converter 101analyzes the CBW, and can learn that data is to be written after this,and can also learn a length of the data to be transmitted thereto(S102). At this time, it is possible to determine on the basis of thelength of the data whether or not a command payload is included in thedata.

Upon receipt of the command header 20 a, and command payload 20 btransferred from the host device 20 (S103), the converter 101 separatesthe command header 20 a, and command payload 20 b from each other byusing the command separating section 102. That is, the commandseparating section 102 regards the first 512-byte of the transferreddata as the command header 20 a, and regards the subsequent data as thecommand payload 20 b to thereby separate them from each other. When thelength of the data does not exceed 512 bytes, the converter 101 carriesout processing assuming that there is no command payload.

The command issuing section 104 issues CMD49 to the command header 20 asupplied from the command separating section 102 (S104), receives aresponse R1 from the memory device 11 (S105) and, thereafter transfersthe command header 20 a to the memory device 11 by using CMD49 (S106).The internal operation (S107) of the memory device is as describedabove.

Further, the command issuing section 104 issues CMD59 to the commandpayload 20 b supplied from the command separating section 102 (S108),receives a response R1 from the memory device 11 (S109) and, thereaftertransfers the command payload 20 b to the memory device 11 (S110). Thememory device 11 processes the command payload (S111).

At the time of issuing CMD59, “BUS” and “BUC” are set in such a mannerthat their length becomes longer than or equal to the length of thecommand payload. When “BUS” and “BUC” are set in such a manner that thelength becomes longer than the length of the command payload, arbitrarydata of a length set by “BUS” and “BUC” may subsequently be transmittedafter transmitting the command payload or the processing may be advancedto the next operation by issuing a command to stop the transmission.

After transmitting the data to the memory device 11, the converter 101transmits a CSW to the host device 20 (S112). Thereby, the host device20 can learn that the processing of the converter 101 has beencompleted.

On the other hand, as shown in FIG. 55, when long data is read from thememory device 11, a CBW is transmitted from the host device 20 to theconverter 101 (S121). The converter analyzes the CBW, and can learn thatdata read is to be carried out after this, and can further learn alength of the data to be read (S122). At this time, it is possible todetermine from the length of the data whether or not a response payloadis necessary. If the length of the specified data exceeds 512 bytes, itis determined that read of a response payload is necessary.

When read of a response payload is necessary, the command issuingsection 104 of the converter 101 issues CMD58 (S123). At the time ofissuing CMD58, “BUS” and “BUC” are set in such a manner that theirlength becomes longer than or equal to the length of the responsepayload. When “BUS” and “BUC” are set in such a manner that the lengthbecomes longer than the length of the response payload, arbitrary datahaving a length set by “BUS” and “BUC” may subsequently be read afterreception of the response payload is finished or the processing may beadvanced to the next operation by issuing a command to stop thetransmission.

After receiving a response R1 from the memory device 11 (S124), thecommand issuing section 104 supplies the block received from the memorydevice 11 to the response joining section 103 (S125).

After this, the command issuing section 104 issues CMD48 (S126). Afterreceiving a response R1 from the memory device (S127), the commandissuing section 104 supplies 512-byte data supplied from the memorydevice 11 to the response joining section 103 as a response header 20 c(S128).

The response joining section 103 joins the response header 20 c, and aresponse payload 20 d constituted of a plurality of blocks together, andtransfers the joined resultant to the host device 20 (S129).

Finally, the converter 101 transmits a CSW to the host device 20 (S130).Thereby, the host device can learn that the converter 101 has completedthe processing.

When the command separating section 102 and response joining section 103are not provided with a work area of a size sufficient for carrying outprocessing, it is also possible to send the data accumulated so far inthe work area to the command issuing section and host device 20 at timesto thereby carry out serial processing.

It should be noted that although the above description is that of a casewhere long data is transferred, in a case of dater transfer where acommand payload 20 b and response payload 20 d are not used, the commandseparating section of the converter 101 simply outputs a command header20 a, and the response joining section 103 simply outputs a responseheader 20 c.

Further, the memory device 11 takes time-out (for example, 250 msec)after transmitting necessary data. After this, it may be indicated thattransmission of the response payload has been completed by using anevent of a response R1.

FIG. 56 is a view showing a modification example of the fifthembodiment, and shows another example of the adapter.

In FIG. 56, an adapter 110 makes it possible to connect the memorydevice 11 and, for example, a hard disk 113 to the host device 20.

The adapter includes a distributor 111, converter 101, and bridgecircuit 112. A first terminal of the distributor 111 is connected to thehost device 20 through the USB. A second terminal of the distributor 111is connected to the memory device 11 through the converter 101. Theconfiguration of the converter 101 is as described above. A thirdterminal of the distributor 111 is connected to the hard disk 113through the bridge circuit 112, and a serial ATA (SATA) cable 114. Thebridge circuit 112 includes, for example, a memory interface module,memory control module, and the like which are not shown.

Even in the case of such a configuration, it is possible to transferdata between the host device 20 and extended function section 19 of thememory device 11 by using the converter 101.

According to the fifth embodiment described above, even when the adapter100 is provided between the host device 20 and memory device 11, it ispossible to transfer data between the host device 20 and extendedfunction section 19 of the memory device 11 by providing the converter101 in the adapter 100.

It should be noted that in the above embodiment, as examples of theextended function, there are a security function to be implemented inthe controller, and security function to be implemented in a memory suchas a NAND flash memory.

The security function to be implemented in the controller implies afunction or the like used to store, for example, key information, andidentification information or the like unique to the controller in thecontroller, and configure a communication channel between the controllerand host device on the basis of these information items.

Further, the security function to be implemented in a memory implies afunction or the like configured to store, for example, key information,identification information unique to the memory, and encryptedidentification information created by encrypting the identificationinformation, in the memory, and carry out authentication processingbetween the memory and host device through the controller on the basisof these information items.

While certain embodiments have been described, these embodiments havebeen presented by way of example only, and are not intended to limit thescope of the inventions. Indeed, the novel embodiments described hereinmay be embodied in a variety of other forms; furthermore, variousomissions, substitutions and changes in the form of the embodimentsdescribed herein may be made without departing from the spirit of theinventions. The accompanying claims and their equivalents are intendedto cover such forms or modifications as would fall within the scope andspirit of the inventions.

What is claimed is:
 1. A memory system comprising: a nonvolatilesemiconductor memory device; a controller configured to control thenonvolatile semiconductor memory device; an extended function section tobe controlled by the controller; and an extension register provided witha certain block length capable of defining an extended function of theextended function section, wherein the controller processes a firstcommand to write header data of a command to operate the extendedfunction section to the extended function section through the extensionregister, and a second command to read header data of a response fromthe extended function section through the extension register, whereinthe controller processes a third command to write variable-lengthcommand data to the extended function section, and a fourth command toread variable-length response data from the extended function section,wherein the third command comprises a field configured to specify ablock size and a block number of the variable-length command data, andthe fourth command comprises a field configured to specify a block sizeand a block number of the variable-length response data.